{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "# Ch `04`: Concept `02`"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "## Logistic regression"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "Import the usual libraries, and set up the usual hyper-parameters:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true,
    "deletable": true,
    "editable": true
   },
   "outputs": [],
   "source": [
    "%matplotlib inline\n",
    "import numpy as np\n",
    "import tensorflow as tf\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "learning_rate = 0.01\n",
    "training_epochs = 1000"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "Set up some data to work with:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.collections.PathCollection at 0x7f7ccfcfa2e8>"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f7d27e5e278>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "x1 = np.random.normal(-4, 2, 1000)\n",
    "x2 = np.random.normal(4, 2, 1000)\n",
    "xs = np.append(x1, x2)\n",
    "ys = np.asarray([0.] * len(x1) + [1.] * len(x2))\n",
    "\n",
    "plt.scatter(xs, ys)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "Define the placeholders, variables, model, cost function, and training op:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": true,
    "deletable": true,
    "editable": true
   },
   "outputs": [],
   "source": [
    "X = tf.placeholder(tf.float32, shape=(None,), name=\"x\")\n",
    "Y = tf.placeholder(tf.float32, shape=(None,), name=\"y\")\n",
    "w = tf.Variable([0., 0.], name=\"parameter\", trainable=True)\n",
    "y_model = tf.sigmoid(w[1] * X + w[0])\n",
    "cost = tf.reduce_mean(-Y * tf.log(y_model) - (1 - Y) * tf.log(1 - y_model))\n",
    "\n",
    "train_op = tf.train.GradientDescentOptimizer(learning_rate).minimize(cost)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "Train the logistic model on the data:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0 0.693147\n",
      "100 0.143233\n",
      "200 0.105674\n",
      "300 0.0909075\n"
     ]
    }
   ],
   "source": [
    "with tf.Session() as sess:\n",
    "    sess.run(tf.global_variables_initializer())\n",
    "    prev_err = 0\n",
    "    for epoch in range(training_epochs):\n",
    "        err, _ = sess.run([cost, train_op], {X: xs, Y: ys})\n",
    "        if epoch % 100 == 0:\n",
    "            print(epoch, err)\n",
    "        if abs(prev_err - err) < 0.0001:\n",
    "            break\n",
    "        prev_err = err\n",
    "    w_val = sess.run(w, {X: xs, Y: ys})"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "Now let's see how well our logistic function matched the training data points:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f7ccfa3d278>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "all_xs = np.linspace(-10, 10, 100)\n",
    "with tf.Session() as sess:\n",
    "    predicted_vals = sess.run(tf.sigmoid(all_xs * w_val[1] + w_val[0]))\n",
    "plt.plot(all_xs, predicted_vals)\n",
    "plt.scatter(xs, ys)\n",
    "plt.show()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
